Trong giai đoạn đầu phát triển JavaScript, Ô nhiễm Không gian tên đã là một rào cản lớn. Khi các đoạn mã không liên quan chia sẻ cùng một tập hợp tên biến toàn cục, các xung đột bất ngờ sẽ xảy ra. Thiết kế hiện đại đã chuyển từ thái độ thiếu cấu trúc sang Hệ thống Module Cô lập.
1. Cách cô lập chức năng (IIFE)
Bằng cách bao bọc mã nguồn trong một Biểu thức Hàm Được Gọi Ngay Lập Tức (IIFE), chúng ta tạo ra một phạm vi riêng tư. Các biến như names bị giam giữ bên trong hàm, không thể truy cập từ môi trường toàn cục.
var internal = "bí mật";
console.log(internal);
})();
2. Giao diện Dựa trên Đối tượng
Để cung cấp chức năng cho thế giới bên ngoài, một module trả về một đối tượng đóng vai trò là giao diện công khai. Điều này nhóm các phương thức liên quan (như name và number) dưới một biến toàn cục được tái sử dụng duy nhất.
3. Mô hình Xuất (Exports Pattern)
Một biến thể tinh vi hơn bao gồm việc truyền một exports đối tượng vào IIFE. Điều này cho phép module gắn API của nó trực tiếp vào mục tiêu không gian tên cụ thể, mang lại sự linh hoạt trong cách module được sử dụng.